/***********************************************************************
    filename:   StaticRenderer.h
    created:    Sat Sep 17 2005
    author:     Tomas Lindquist Olsen (based on code by Paul D Turner)
*************************************************************************/

#ifndef _StaticRenderer_h_
#define _StaticRenderer_h_

#include "../hgeForwardRef.h"
#include "../hgeRenderer.h"
#include "../hgeGuiWindowRenderer.h"
#include "RendererProperties.h"

#if defined(_MSC_VER)
#	pragma warning(push)
#	pragma warning(disable : 4251)
#endif

/*!
\brief
    Static class for the FalagardBase module.

    This class requires LookNFeel to be assigned.  The LookNFeel should provide the following:

    States:
        - Enabled                     - basic rendering for enabled state.
        - Disabled                    - basic rendering for disabled state.
        - EnabledFrame                - frame rendering for enabled state
        - DisabledFrame               - frame rendering for disabled state.
        - WithFrameEnabledBackground  - backdrop rendering for enabled state with frame enabled.
        - WithFrameDisabledBackground - backdrop rendering for disabled state with frame enabled.
        - NoFrameEnabledBackground    - backdrop rendering for enabled state with frame disabled.
        - NoFrameDisabledBackground   - backdrop rendering for disabled state with frame disabled.
*/
class StaticRenderer : public WindowRenderer
{
public:
	//! type name for this widget.
    static const String TypeName;

    StaticRenderer(const String& type);

    /*!
    \brief
        Return whether the background for this static widget is enabled to disabled.

    \return
        true if the background is enabled and will be rendered.  false if the background is disabled and will not be rendered.
    */
    bool    isBackgroundEnabled(void) const        {return d_backgroundEnabled;}

    /*!
    \brief
        Enable or disable rendering of the background for this static widget.

    \param setting
        true to enable rendering of the background.  false to disable rendering of the background.
    */
    void    setBackgroundEnabled(bool setting);

    virtual void render();

protected:
    // static properties
    static RendererProperties::BackgroundEnabled  d_backgroundEnabledProperty;

    // implementation data
    bool d_backgroundEnabled;   //!< true when the background is enabled.
};

#if defined(_MSC_VER)
#	pragma warning(pop)
#endif

#endif  // end of guard _StaticRenderer_h_
